package com.ldu.houserent.common.base;

import com.ldu.houserent.common.constant.Constant;
import com.ldu.houserent.common.enums.UserRoleEnum;
import com.ldu.houserent.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

import javax.servlet.http.HttpServletRequest;

/*
    所有Controller控制器的基类
 */
@Controller
public class BaseController {

    @Autowired
    protected HttpServletRequest request;       //浏览器发出的请求

    /*
        从session中获取到当前登录用户
     */
    public User getLoginUser(){
        User user= (User) request.getSession().getAttribute(Constant.SESSION_USER_KEY);
        return user;
    }

    /*
        获取到当前登录用户id
     */
    public Long getLoginUserId(){
        User user = getLoginUser();
        if (user==null){    //说明用户没有登录
            return null;
        }
        return user.getId();
    }

    /*
        判断当前是否是管理员
     */
    public Boolean loginUserIsAdmin(){
        User user=getLoginUser();
        if (user==null){    //如果当前用户为空，即未登录状态
            return false;
        }else {
            return UserRoleEnum.ADMIN.getValue().equalsIgnoreCase(user.getRole());      //用当前用户和admin做比较，并返回
        }
    }

    /*
        判断当前是否是租客
     */
    public Boolean loginUserIsCustomer(){
        User user=getLoginUser();
        if (user==null){    //如果当前用户为空，即未登录状态
            return false;
        }else {
            return UserRoleEnum.CUSTOMER.getValue().equalsIgnoreCase(user.getRole());      //用当前用户和Customer做比较，并返回
        }
    }

    /*
        判断当前是否是房东
     */
    public Boolean loginUserIsOwner(){
        User user=getLoginUser();
        if (user==null){    //如果当前用户为空，即未登录状态
            return false;
        }else {
            return UserRoleEnum.OWNER.getValue().equalsIgnoreCase(user.getRole());      //用当前用户和Owner做比较，并返回
        }
    }

    /*
        渲染404页面
     */
    public String renderNotFound(){
        return "forward:/404";
    }

    /*
        没有权限访问
     */
    public String renderNotAllowAccess(){
        return "forward:/403";
    }

    /*
        服务器异常
     */
    public String renderServerException(){
        return "forward:/500";
    }

    /*
        系统异常
     */
    public String renderError(){
        return "forward:/error";
    }



}
